package com.hxd.otc.api;

import com.hxd.otc.base.BaseBean;
import com.hxd.otc.module.my.bean.AdvertBean;
import com.hxd.otc.module.my.bean.AdvertCoinTypeBean;
import com.hxd.otc.module.my.bean.AdvertPreBean;
import com.hxd.otc.module.my.bean.BaseListBean;
import com.hxd.otc.module.my.bean.MyBondBean;
import com.hxd.otc.module.my.bean.TakeOrderStatusBean;

import java.util.ArrayList;
import java.util.HashMap;

import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

public interface IOtcAdvertApi {
    @GET("otc/myAdvert/list")
    Observable<BaseBean<BaseListBean<AdvertBean>>> getMyAdvertList(@Query("exType") int exType, @Query("size") int showCount,
                                                                   @Query("current") int currentPage);

    /**
     * 获取虚拟币信息
     *
     * @return
     */
    @GET("otc/coin/list")
    Observable<BaseBean<ArrayList<AdvertCoinTypeBean>>> getCoinType(@Query("userId") String userId, @Query("businessType") String businessType);

    /**
     * 普通广告
     */
    @POST("otc/publish")
    Observable<BaseBean<String>> publishAdvert(@Query("volume") String volume,
                                               @Query("price") String price, @Query("symbol") String symbol,
                                               @Query("exType") int exType, @Query("supportCurrencyCode") String supportCurrencyCode,
                                               @Query("supportBank") String supportBank, @Query("minVolume") String minVolume,
                                               @Query("maxVolume") String maxVolume, @Query("minMoney") int minMoney, @Query("maxMoney") int maxMoney);

    /**
     * 浮动定价广告
     */
    @POST("otc/publish")
    Observable<BaseBean<String>> publishFloatAdvert(@Query("volume") String volume,
                                                    @Query("symbol") String symbol, @Query("exType") int exType,
                                                    @Query("supportCurrencyCode") String supportCurrencyCode,
                                                    @Query("supportBank") String supportBank, @Query("minVolume") String minVolume,
                                                    @Query("maxVolume") String maxVolume, @Query("floatPrice") String floatPrice,
                                                    @Query("floatPlat") String floatPlat, @Query("floatRate") double floatRate,
                                                    @Query("minPrice") String minPrice, @Query("minMoney") int minMoney, @Query("maxMoney") int maxMoney);

    /**
     * 发布无感支付广告
     */
    @POST("otc/easy-publish")
    Observable<BaseBean<String>> publishEasyAdvert(@Query("volume") String volume,
                                                   @Query("price") String price, @Query("symbol") String symbol,
                                                   @Query("exType") int exType, @Query("supportCurrencyCode") String supportCurrencyCode,
                                                   @Query("supportBank") String supportBank, @Query("minVolume") String minVolume,
                                                   @Query("maxVolume") String maxVolume, @Query("minMoney") int minMoney, @Query("maxMoney") int maxMoney);

    /**
     * 下架广告
     *
     * @return
     */
    @POST("otc/gadvert/cancel")
    Observable<BaseBean<String>> revokeAdvert(@Query("orderId") String orderId);

    /**
     * 下架广告
     *
     * @return
     */
    @POST("otc/easypay/gadvert/cancel")
    Observable<BaseBean<String>> revokeEasePayAdvert(@Query("orderId") String orderId);

    @GET("otc/pre-publish")
    Observable<BaseBean<HashMap<String, ArrayList<AdvertPreBean>>>> getPublishAdvertPre();

    @GET("otc/ys/tradeStutsByUserId")
    Observable<BaseBean<TakeOrderStatusBean>> tradeStutsByUserId();

    @POST("otc/ys/updateTradeStuts")
    Observable<BaseBean> updateTradeStuts(@Query("tradeStatus") String tradeStatus);

    @GET("otc/ys/myBond")
    Observable<BaseBean<MyBondBean>> getADBond();
}